package org.ee.core.util;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
 * 日志工具类
 * @Author jokr
 * @Date 2025/8/20 上午11:49
 */
public class LogUtil {

    // 获取调用日志方法的类的 Logger 实例
    private static Logger getLogger() {
        // 获取堆栈信息，获取调用日志方法的类名
        StackTraceElement element = Thread.currentThread().getStackTrace()[3];
        try {
            Class<?> clazz = Class.forName(element.getClassName()); // 获取类对象
            return LogManager.getLogger(clazz); // 根据类名获取 Logger
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            return LogManager.getLogger(LogUtil.class); // 如果无法获取，默认使用 LogUtils 类的 Logger
        }
    }

    // 日志级别：TRACE
    public static void trace(String message) {
        getLogger().trace(message);
    }

    // 日志级别：DEBUG
    public static void debug(String message) {
        getLogger().debug(message);
    }

    // 日志级别：INFO
    public static void info(String message) {
        getLogger().info(message);
    }

    // 日志级别：WARN
    public static void warn(String message) {
        getLogger().warn(message);
    }

    // 日志级别：ERROR
    public static void error(String message) {
        getLogger().error(message);
    }

    // 带异常堆栈的日志
    public static void error(String message, Throwable throwable) {
        getLogger().error(message, throwable);
    }

    // 日志级别：FATAL
    public static void fatal(String message) {
        getLogger().fatal(message);
    }
}
